Hi, 我是魚板伯爵今天要教大家 Button 這個元件,教學內容只會擷取片段程式碼,建議大家搭配完整程式碼來練習。
可以加入小圖標的按鈕
color
:Icon的顏色highlightColor
:當按鈕按下時的顏色splashColor
:當按鈕按下時的水波顏色icon
:按鈕IcononPressed
:按鈕按下時所調用的邏輯,若為null
則不使用iconSize
: Icon大小,預設為24class DemoIconButton extends StatelessWidget {
const DemoIconButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: IconButton(
iconSize: 50,
color: Colors.amber,
// 水波和觸發顏色為透明
highlightColor: Colors.transparent,
splashColor: Colors.transparent,
icon: Icon(Icons.ac_unit),
onPressed: () {
log("click", name: "INFO");
},
),
);
}
}
文字按鈕
style
:利用TextButton.styleFrom
變更按鈕顏色、風格child
:子元件onPressed
:點擊按鈕時觸發的邏輯onLongPress
:長壓按鈕時觸發的邏輯class DemoTextButton extends StatelessWidget {
const DemoTextButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: TextButton(
child: Text(
"Hello",
style: TextStyle(color: Colors.white),
),
style: TextButton.styleFrom(
backgroundColor: Colors.green,
),
onPressed: () {
log("click", name: "INFO");
},
onLongPress: () {
log("long click", name: "INFO");
},
),
);
}
}
會有編框的按鈕
style
:利用OutlinedButton.styleFrom
變更按鈕顏色、風格child
:子元件onPressed
:點擊按鈕時觸發的邏輯onLongPress
:長壓按鈕時觸發的邏輯class DemoOutlinedButton extends StatelessWidget {
const DemoOutlinedButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: OutlinedButton(
child: Text("Hello"),
style: OutlinedButton.styleFrom(
primary: Colors.white,
backgroundColor: Colors.blueGrey,
),
onPressed: () {
log("click", name: "INFO");
},
onLongPress: () {
log("long click", name: "INFO");
},
),
);
}
}
這個按鈕會有漂浮的感覺。
style
:利用ElevatedButton.styleFrom
變更按鈕顏色、風格child
:子元件onPressed
:點擊按鈕時觸發的邏輯onLongPress
:長壓按鈕時觸發的邏輯class DemoElevatedButton extends StatelessWidget {
const DemoElevatedButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: ElevatedButton(
child: Text("Hello"),
style: ElevatedButton.styleFrom(
elevation: 20,
),
onPressed: () {
log("click", name: "INFO");
},
),
);
}
}
若將onPressed
後面帶null
的話,按鈕就會變成灰色不能按。
class DemoNullButton extends StatelessWidget {
const DemoNullButton({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: OutlinedButton(
child: Text("Hello"),
onPressed: null,
),
);
}
}